<!DOCTYPE html>
<html lang="en">
  <head>
  <meta charset="utf-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
  <meta content="" name="keywords">

  <title> Docker入门 - </title>
  <meta name="description" content="" />
  <meta property="og:title" content="Docker入门" />
  <meta name="twitter:title" content="Docker入门" />
  <meta name="description" content="Docker入门基础知识介绍">
  <meta property="og:description" content="Docker入门基础知识介绍">
  <meta name="twitter:description" content="Docker入门基础知识介绍">
  <meta name="author" content="{Description { .Site.Author.name }}"/>
  <meta name="twitter:card" content="summary" />
  <meta property="og:url" content="https://systemime.github.io/blog/2019-01/docker%E5%85%A5%E9%97%A8/" />
  <meta property="og:type" content="website" />
  <meta property="og:site_name" content="听风的小站" />

  <meta name="generator" content="Hugo 0.67.0" />
  <link rel="canonical" href="https://systemime.github.io/blog/2019-01/docker%E5%85%A5%E9%97%A8/" />
  <link rel="alternate" href="https://systemime.github.io/index.xml" type="application/rss+xml" title="听风的小站">
  <script src="https://res.cloudinary.com/jimmysong/raw/upload/rootsongjc-hugo/jquery-1.12.4.min.js"></script>
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.7.1/katex.min.css" integrity="sha384-wITovz90syo1dJWVh32uuETPVEtGigN07tkttEqPv+uR2SE/mbQcG7ATL28aI9H0" crossorigin="anonymous">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" />
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
  
  
  <link rel="stylesheet" href="https://systemime.github.io/css/main.css" />
  <link rel="stylesheet" href="https://systemime.github.io/css/my.css" />
  <link rel="stylesheet" href="https://systemime.github.io/css/pace.css" />
  <link rel="stylesheet" href="https://cdn.plyr.io/3.4.7/plyr.css">
  <link rel="stylesheet" href="https://systemime.github.io/css/lightgallery.css" />
  <link rel="stylesheet" href="https://systemime.github.io/css/baguetteBox.css" />
  <link rel="stylesheet" href="https://systemime.github.io/css/search.css" />
  <link rel="stylesheet" href="https://systemime.github.io/css/reward.css" />
  <link rel="stylesheet" href="https://systemime.github.io/css/share.min.css" />
  <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic" />
  <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800" />
  <link rel="stylesheet" href="https://systemime.github.io/css/pygment_highlights.css" />
  <link rel="stylesheet" href="https://systemime.github.io/css/highlight.min.css" />
  <link rel="stylesheet" href="https://systemime.github.io/css/toc.css" />
  <link rel="stylesheet" href="https://systemime.github.io/css/lightbox.css" />
  <link rel="stylesheet" href="https://systemime.github.io/live2d/css/live2d.css" />
  
  <link href="https://systemime.github.io/css/video-js.css" rel="stylesheet">


<meta name="baidu-site-verification" content="g8IYR9SNLF" />
<script>
var _hmt = _hmt || [];
(function() {
  var hm = document.createElement("script");
  hm.src = "https://hm.baidu.com/hm.js?cffe439e37449bb1c07ab26ab56484bb";
  var s = document.getElementsByTagName("script")[0]; 
  s.parentNode.insertBefore(hm, s);
})();
</script>

<link rel="stylesheet" href="https://systemime.github.io/css/prism.css" />









<script src="https://systemime.github.io/js/pace.min.js" data-no-instant></script>



<script src="https://systemime.github.io/js/instantclick.min.js" data-no-instant></script>
   <script data-no-instant>
   InstantClick.on('change', function(isInitialLoad) {
     if (isInitialLoad === false) {
       if (typeof MathJax !== 'undefined') 
         MathJax.Hub.Queue(["Typeset",MathJax.Hub]);
       if (typeof prettyPrint !== 'undefined') 
         prettyPrint();
       if (typeof _hmt !== 'undefined')  
         _hmt.push(['_trackPageview', location.pathname + location.search]);
       if (typeof ga !== 'undefined')  
           ga('send', 'pageview', location.pathname + location.search);
     }
   });
   InstantClick.init();
</script>




<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/gist-embed/2.7.1/gist-embed.min.js"></script>


<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<script>
  (adsbygoogle = window.adsbygoogle || []).push({
    google_ad_client: "ca-pub-3925981084585036",
    enable_page_level_ads: true
  });
</script>



<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/photoswipe.min.css" integrity="sha256-sCl5PUOGMLfFYctzDW3MtRib0ctyUvI9Qsmq2wXOeBY=" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/default-skin/default-skin.min.css" integrity="sha256-BFeI1V+Vh1Rk37wswuOYn5lsTcaU96hGaI7OUVCLjPc=" crossorigin="anonymous" />



<div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">

<div class="pswp__bg"></div>

<div class="pswp__scroll-wrap">
    
    <div class="pswp__container">
      <div class="pswp__item"></div>
      <div class="pswp__item"></div>
      <div class="pswp__item"></div>
    </div>
    
    <div class="pswp__ui pswp__ui--hidden">
    <div class="pswp__top-bar">
      
      <div class="pswp__counter"></div>
      <button class="pswp__button pswp__button--close" title="Close (Esc)"></button>
      <button class="pswp__button pswp__button--share" title="Share"></button>
      <button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button>
      <button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button>
      
      
      <div class="pswp__preloader">
        <div class="pswp__preloader__icn">
          <div class="pswp__preloader__cut">
            <div class="pswp__preloader__donut"></div>
          </div>
        </div>
      </div>
    </div>
    <div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
      <div class="pswp__share-tooltip"></div>
    </div>
    <button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)">
    </button>
    <button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)">
    </button>
    <div class="pswp__caption">
      <div class="pswp__caption__center"></div>
    </div>
    </div>
    </div>
</div>

</head>

  <body>
    <nav class="navbar navbar-default navbar-fixed-top navbar-custom">
  <div class="container-fluid">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#main-navbar">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="https://systemime.github.io">听风的小站</a>
    </div>
    <div class="collapse navbar-collapse" id="main-navbar">
      <ul class="nav navbar-nav navbar-right">
        
          
            <li>
		    <a title="博客" href="https://systemime.github.io/blog/">博客</a>
              
              
            </li>
          
        
          
            <li>
		    <a title="片刻" href="https://systemime.github.io/moment/">片刻</a>
              
              
            </li>
          
        
          
            <li>
		    <a title="关于" href="https://systemime.github.io/about/">关于</a>
              
              
            </li>
          
        
          
            <li>
		    <a title="留言" href="https://systemime.github.io/message/">留言</a>
              
              
            </li>
          
        

        

        
        
      </ul>
    </div>

    <div class="avatar-container">
      <div class="avatar-img-border">
        
      </div>
    </div>

  </div>
</nav>






    
  
  
  




  

  <header class="header-section ">
    
    <div class="intro-header no-img">
      
      <div class="container">
        <div class="row">
          <div class="col-lg-12 col-md-12 col-md-offset-0">
            <div class="blog-heading">
                <h1 align="center">Docker入门</h1>
                
                
            </div>
          </div>
        </div>
      </div>
    </div>
  </header>


    
<div class="container" role="main" itemscope itemtype="http://schema.org/Article">
    <div class="row">
        <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
            
            
            
<div>
    <section id="datecount">
        <h4 id="date"> Wed Jan 2, 2019</h4>
    </section>
    <h5 id="wc">3200 Words|Read in about 7 Min|本文总阅读量<span id="busuanzi_value_page_pv"></span>次</h5>
    <h5 id="tags">Tags: 
        
        <a href="https://systemime.github.iotags/docker/">Docker</a> &nbsp;
        
        <a href="https://systemime.github.iotags/%E5%9F%BA%E7%A1%80/">基础</a> &nbsp;
    </h5>
</div>

            
            <article role="main" class="blog-post" itemprop="articleBody" id="content">
                
<aside class="toc">
    <div id='anchors-navbar'>
        <i class='fa fa-anchor'></i>
        <nav id="TableOfContents">
  <ul>
    <li><a href="#docker-的优点">Docker 的优点</a></li>
    <li><a href="#docker-与-虚拟机的区别">Docker 与 虚拟机的区别</a>
      <ul>
        <li><a href="#虚拟机的架构">虚拟机的架构</a></li>
        <li><a href="#容器的架构">容器的架构</a></li>
        <li><a href="#lxc">LXC</a></li>
        <li><a href="#docker-与-microservices-的关系">Docker 与 Microservices 的关系</a></li>
      </ul>
    </li>
    <li><a href="#为什么要用-docker">为什么要用 Docker</a></li>
    <li><a href="#如何使用-docker">如何使用 Docker</a>
      <ul>
        <li><a href="#docker安装">Docker安装</a></li>
        <li><a href="#测试">测试</a></li>
      </ul>
    </li>
    <li><a href="#hello-world">Hello World</a></li>
    <li><a href="#常用命令">常用命令</a></li>
  </ul>
</nav>
    </div>
    
</aside>


                <h1 id="docker简介">Docker简介</h1>
<p>Docker 是 Golang 编写的， 自 2013 年推出以来，受到越来越多的开发者的关注。如果你关注最新的技术发展，那么你一定听说过 Docker。不管是云服务还是微服务（Microservices），越来越多的厂商都开始基于 Docker 作为基础设施自动化的工具。那么什么是 Docker？Docker与传统的虚拟机有什么区别？为何要采用 Docker？如何使用 Docker？</p>
<p>本文，就针对上述提到的问题，来简单介绍下 Docker。</p>
<blockquote>
<p>本文所述<strong><code>安装方法</code></strong>适用<code>ubuntu14.04</code>及以前版本，<code>16.04</code>版本及以上请参阅：<a href="https://qfdxz.top/2019/02/12/Ubuntu-%E5%AE%89%E8%A3%85-Docker-CE/#more">Ubuntu 安装 Docker CE</a></p>
</blockquote>
<!-- raw HTML omitted -->
<p>Docker 可以让你将所有应用软件以及它的以来打包成软件开发的标准化单元。</p>
<p>Docker容器将软件以及它运行安装所需的一切文件（代码、运行时、系统工具、系统库）打包到一起，这就保证了不管是在什么样的运行环境，总是能以相同的方式运行。就好像 Java 虚拟机一样，“一次编写，到处运行（Write once, run anywhere）”，而 Docker 是“一次构建，到处运行（Build once，run anywhere）”。</p>
<p><img src="https://raw.githubusercontent.com/systemime/my_image/master/docker%E7%AE%80%E4%BB%8B/640.jpg" alt="图片1"></p>
<p>Docker 是一种“容器即服务”（Docker Containers as a Service ，简称 CaaS），使得开发和IT运营团队可以对于应用的构建、发布、运行更加敏捷和可控。</p>
<p>概括的说： <code>Docker</code> 是为开发人员和系统管理员用于构建、发布、并运行分布式应用程序的开放式平台。该平台由 <code>Docker</code> 引擎（一个便携、轻巧的运行时和打包工具） 和 <code>Docker Hub</code> （一个共享应用程序和自动化工作流的云服务）等组成。<code>Docker</code> 可以使应用程序从组件迅速组装并消除了开发、质量保证和生产环境之间的摩擦问题。这样一来，IT部门可以更快地发布，而这些应用程序不管是运行在笔记本电脑、数据中心的虚拟机，还是任何的云，其运行过程和结果都是一致的。</p>
<p>我们再来看下 Docker 的 Logo 。很明显，这是一只鲸鱼，它托着许多集装箱。我们可以把宿主机可当做这只鲸鱼，把相互隔离的容器可看成集装箱，每个集装箱中都包含自己的应用程序。这 Logo 简直的太形象了！</p>
<p><img src="https://raw.githubusercontent.com/systemime/my_image/master/docker%E7%AE%80%E4%BB%8B/docker.jpg" alt="logo"></p>
<h2 id="docker-的优点">Docker 的优点</h2>
<ul>
<li>轻量级：所有容器在一台机器上共享同一个操作系统内核，这样他们立即开始，并更有效地利用内存。Image 是从分层文件系统的构建，这样他们能够共享公共文件，使得磁盘使用率和 Image 的下载更加高效。</li>
<li>开放：Docker 容器是基于开发的标准，允许容器运行在主流的 Linux 发布版和 Microsoft 操作系统作为所有的基础设施。</li>
<li>安全：容器使得应用程序彼此隔离，而基础架构同时为应用程序提供了额外的保护层。</li>
</ul>
<h2 id="docker-与-虚拟机的区别">Docker 与 虚拟机的区别</h2>
<p>容器与虚拟机有着类似的资源隔离和分配的优点，但不同的架构方法使容器能够更加便携，高效等。</p>
<h3 id="虚拟机的架构">虚拟机的架构</h3>
<p><img src="https://raw.githubusercontent.com/systemime/my_image/master/docker%E7%AE%80%E4%BB%8B/%E6%9E%B6%E6%9E%84.jpg" alt="虚拟机架构"><br>
每个虚拟机都包括应用程序、必要的二进制文件和库以及一个完整的客户操作系统(Guest OS)，尽管它们被分离，它们共享并利用主机的硬件资源，将近需要十几个 GB 的大小。</p>
<h3 id="容器的架构">容器的架构</h3>
<p><img src="https://raw.githubusercontent.com/systemime/my_image/master/docker%E7%AE%80%E4%BB%8B/%E5%AE%B9%E5%99%A8%E6%9E%B6%E6%9E%84.jpg" alt="容器架构"></p>
<p>容器包括应用程序及其所有的依赖，但与其他容器共享内核。它们以独立的用户空间进程形式运行在主机操作系统上。他们也不依赖于任何特定的基础设施，Docker 容器可以运行在任何计算机上，任何基础设施和任何云上。</p>
<p>Docker 的容器利用了 LXC，管理利用了 namespaces 来做权限的控制和隔离，cgroups 来进行资源的配置，并且还通过 aufs 来进一步提高文件系统的资源利用率，而这些技术都不是 Docker 独创。</p>
<h3 id="lxc">LXC</h3>
<p>LXC 与虚拟机的不同之处在于，它是一个操作系统级别的虚拟化环境，而不是硬件虚拟化环境。他们都做同样的事情，但 LXC 是操作系统级别的虚拟化环境，虚拟环境有它自己的进程和网络空间，而不是创建一个完整成熟的虚拟机。因此，一个 LXC 虚拟操作系统具有最小的资源需求，并启动只需几秒钟。</p>
<p>正如你可以在下图中看到的，左侧是 LXC 虚拟的 Ubuntu ，默认安装使用 11 MB 大小。
<img src="https://raw.githubusercontent.com/systemime/my_image/master/docker%E7%AE%80%E4%BB%8B/lxc.jpg" alt="LXC"></p>
<h3 id="docker-与-microservices-的关系">Docker 与 Microservices 的关系</h3>
<p>Microservices（微服务） 依赖于“基础设施自动化”，而 Docker 正是“基础设施自动化”的利器。可以说 Docker 的火爆，一定程度上也带动了微服务架构的兴起，而微服务的广泛应用也促进了 Docker 繁荣。可以说两者相辅相成。</p>
<p>有关微服务的介绍，可以移步至《简述 Microservices（微服务）》。</p>
<blockquote>
<p><a href="http://www.importnew.com/24651.html">http://www.importnew.com/24651.html</a></p>
</blockquote>
<h2 id="为什么要用-docker">为什么要用 Docker</h2>
<ul>
<li>开发更加敏捷：Docker 让开发人员可以自由定义环境，创建和部署的应用程序更快、更容易，IT 运维人员快速应对变化也更加灵活性。</li>
<li>更加可控：Docker 使得开发人员保存从基础设施到应用的代码，帮助 IT 运维人管理拥有标准的、安全的、可扩展的操作环境。</li>
<li>高可移植性：Docker 允许自由选择，可以是从笔记本电脑到一个团队，从私人基础设施到公共云提供商。</li>
</ul>
<p>这样，你可以专注于开发应用，其他的繁琐事交给 Docker 去做吧。</p>
<h2 id="如何使用-docker">如何使用 Docker</h2>
<p>这可真是一个大话题，如果完整阐述足够写一本书了。好在我们的目的是做入门普及，因此我们就简单讲一下 Docker 的安装、基本使用和常用命令。</p>
<h3 id="docker安装">Docker安装</h3>
<blockquote>
<p>注意！！！本文下面所记录的docker命令或安装方式部分已经过时，请参照较新的博文进行参考
注意！！！本文下面所记录的docker命令或安装方式部分已经过时，请参照较新的博文进行参考
注意！！！本文下面所记录的docker命令或安装方式部分已经过时，请参照较新的博文进行参考</p>
<p>请参阅本站《Docker操作命令》与《Ubuntu安装Docker-CE》，在本站可以直接使用 搜索功能</p>
</blockquote>
<p>建议在linux环境下安装Docker，window环境搭建比较复杂且容易出错，使用Centos7+yum来安装Docker环境很方便。</p>
<p>Docker 软件包已经包括在默认的 CentOS-Extras 软件源里。因此想要安装 docker，只需要运行下面的 yum 命令：</p>
<blockquote>
<p>yum install docker</p>
</blockquote>
<p>安装完成后，使用下面的命令来启动 docker 服务，并将其设置为开机启动：</p>
<blockquote>
<p>service docker start<!-- raw HTML omitted -->
chkconfig docker on</p>
</blockquote>
<p>LCTT 译注：此处采用了旧式的 sysv 语法，如采用CentOS 7中支持的新式 systemd 语法，如下：</p>
<blockquote>
<p>systemctl docker start<!-- raw HTML omitted -->
chkconfig docker on</p>
</blockquote>
<h3 id="测试">测试</h3>
<blockquote>
<p>docker version</p>
</blockquote>
<p>输入上述命令，返回docker的版本相关信息，证明docker安装成功。</p>
<h2 id="hello-world">Hello World</h2>
<p>下面，我们通过最简单的 image 文件&quot;hello world&rdquo;，感受一下 Docker。</p>
<p>因为国内连接 Docker 的官方仓库很慢，因此我们在日常使用中会使用Docker 中国加速器。通过 Docker 官方镜像加速，中国区用户能够快速访问最流行的 Docker 镜像。该镜像托管于中国大陆，本地用户现在将会享受到更快的下载速度和更强的稳定性，从而能够更敏捷地开发和交付 Docker 化应用。</p>
<p>Docker 中国官方镜像加速可通过 registry.docker-cn.com访问。该镜像库只包含流行的公有镜像，私有镜像仍需要从美国镜像库中拉取。</p>
<p>修改系统中docker对应的配置文件即可，如下：</p>
<pre><code>vi /etc/docker/daemon.json
# 添加后
&quot;registry-mirrors&quot;: [&quot;https://registry.docker-cn.com&quot;],
&quot;live-restore&quot;: true
}
</code></pre><p>运行下面的命令，将 image 文件从仓库抓取到本地。</p>
<pre><code>docker pull library/hello-world
</code></pre><p>上面代码中，docker image pull是抓取 image 文件的命令。library/hello-world是 image 文件在仓库里面的位置，其中library是 image 文件所在的组，hello-world是 image 文件的名字。</p>
<p>抓取成功以后，就可以在本机看到这个 image 文件了。</p>
<pre><code>&gt; docker images 
&gt; 显示结果 
&gt; REPOSITORY TAG IMAGE ID CREATED SIZE&lt;br&gt;
&gt; docker.io/hello-world latest f2a91732366c 3 months ago 1.848 kB
</code></pre><p>现在，运行这个 image 文件。</p>
<pre><code>&gt; docker run hello-world
&gt; # 显示结果 
&gt; Hello from Docker! 
&gt; This message shows that your installation appears to be working correctly. 
&gt; ... 
</code></pre><p>输出这段提示以后，hello world就会停止运行，容器自动终止。有些容器不会自动终止，因为提供的是服务，比如Mysql镜像等。</p>
<h2 id="常用命令">常用命令</h2>
<p>除过以上我们使用的Docker命令外，Docker还有一些其它常用的命令。</p>
<p>拉取docker镜像</p>
<pre><code>docker pull image_name
</code></pre><p>查看宿主机上的镜像，Docker镜像保存在/var/lib/docker目录下:</p>
<pre><code>docker images
</code></pre><p>删除镜像</p>
<pre><code>docker rmi docker.io/tomcat:7.0.77-jre7 或者 docker rmi b39c68b7af30
</code></pre><p>查看当前有哪些容器正在运行</p>
<pre><code>docker ps
</code></pre><p>查看所有容器</p>
<pre><code>docker ps -a
</code></pre><p>启动、停止、重启容器命令：</p>
<pre><code>&gt;docker start container_name/container_id&lt;br&gt;
&gt;docker stop container_name/container_id&lt;br&gt;
&gt;docker restart container_name/container_id
</code></pre><p>后台启动一个容器后，如果想进入到这个容器，可以使用attach命令：</p>
<pre><code>docker attach container_name/container_id
</code></pre><pre><code>删除容器的命令
&gt;docker rm container_name/container_id

查看当前系统Docker信息
&gt;docker info

从Docker hub上下载某个镜像:
&gt;docker pull centos:latest&lt;br&gt;
&gt;docker pull centos:latest
</code></pre><p>执行docker pull centos会将Centos这个仓库下面的所有镜像下载到本地repository。</p>

                <br />
                <div style="text-align:center;color: #ccc;font-size:16px;font-family: cursive;">-------他日江湖相逢 <i class="fa fa-umbrella"></i> 再当杯酒言欢-------</div>
                <script src="https://systemime.github.io/js/particle.js"></script>
                
                
                <div class="social-share" data-initialized="true" data-wechat-qrcode-title="不扫别后悔">
    <center>
    <font style="font-size:18px;color:darkcyan;">分享到：</font>
    <a href="#" class="social-share-icon icon-weibo"></a>
    <a href="#" class="social-share-icon icon-wechat"></a>
    <a href="#" class="social-share-icon icon-twitter"></a>
    <a href="#" class="social-share-icon icon-linkedin"></a>
    <a href="#" class="social-share-icon icon-facebook"></a>
    <a href="#" class="social-share-icon icon-qq"></a>
    </center>
</div>


<script src="https://hugo-picture.oss-cn-beijing.aliyuncs.com/social-share.min.js"></script>

                
            </article>

            <ul class="pager blog-pager">
                
                <li class="previous">
                    <a href="https://systemime.github.io/blog/2019-01/mood/" data-toggle="tooltip" data-placement="top" title="Mood">&larr; Previous Post</a>
                </li>
                 
                <li class="next">
                    <a href="https://systemime.github.io/blog/2019-01/%E6%9C%BA%E6%88%BFip%E4%BF%AE%E6%94%B9/" data-toggle="tooltip" data-placement="top" title="机房IP修改">Next Post &rarr;</a>
                </li>
                
            </ul>
            
            <div>
                 
            </div>
            
            
            
              
            
            </div>
        </div>
        <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
            
            
        </div>
    </div>
    </section>
</div>

    <div class="rocket"><img src="https://systemime.github.io/img/rocket_up.png" alt="" width="100" height="100"></div>
<script>
    $(function () {
      $(window).scroll(function () {
        
        if ($(window).scrollTop() >= 1000) {
          $('.rocket').stop().fadeIn(1000);
        }else {
          $('.rocket').stop().fadeOut(1000);
        }
      })
      
      $('.rocket').click(function () {
        $('html,body').stop().animate({scrollTop:0},400);
       
      })
    })

</script>

    
    <div id="landlord">
        <div class="message" style="opacity:0"></div>
        <canvas id="live2d" width="280" height="250" class="live2d"></canvas>
        <div class="hide-button">隐藏</div>
    </div>
    
    <footer id="copyright">
  <div class="container">
    <div class="row">
      <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
        <ul class="list-inline text-center footer-links">
          
          
        </ul>
        <p class="credits copyright text-muted">
        &copy;2017-2018
          
          &nbsp;&bull;&nbsp;
          September 20,2019
          updated
          
            &nbsp;&bull;&nbsp;
            <a href="https://systemime.github.io">Home</a>
          
        </p>

        <p class="credits theme-by text-muted">
        <a href="https://servicemesher.github.io" target="_blank">ServiceMesher</a>&nbsp;&bull;&nbsp;<a href="https://github.com/yangchuansheng/k8s-knowledge" target="_blank">Kubernetes 知识图谱</a>
        <br />
        <span id="busuanzi_container_site_pv">
            本站已被访问 <span id="busuanzi_value_site_pv"></span> 次啦
        </span>
        <span id="busuanzi_container_site_uv">
            &ensp;|&ensp;&thinsp;您是第 <span id="busuanzi_value_site_uv"></span> 位到访的小伙伴喔
        </span>
        </p>
        
        <p class="credits theme-by text-muted">
          <a href="http://gohugo.io">Hugo v0.67.0</a> powered &nbsp;&bull;&nbsp; Theme by <a href="http://deanattali.com/beautiful-jekyll/">Beautiful Jekyll</a> adapted to <a href="https://github.com/halogenica/beautifulhugo">Beautiful Hugo</a>
          
          <center><section class="credits theme-by text-muted">
    <span class="footer__copyright">
    <div>
    <span id="span_dt_dt"> </span>
    <script language="javascript">
      function show_date_time(){
        window.setTimeout("show_date_time()", 1000);
        BirthDay=new Date("7/8/2017 10:56:12");
        today=new Date();
        timeold=(today.getTime()-BirthDay.getTime());
        sectimeold=timeold/1000
        secondsold=Math.floor(sectimeold);
        msPerDay=24*60*60*1000
        e_daysold=timeold/msPerDay
        daysold=Math.floor(e_daysold);
        e_hrsold=(e_daysold-daysold)*24;
        hrsold=Math.floor(e_hrsold);
        e_minsold=(e_hrsold-hrsold)*60;
        minsold=Math.floor((e_hrsold-hrsold)*60);
        seconds=Math.floor((e_minsold-minsold)*60);
        span_dt_dt.innerHTML="本博客已经开心运行 "+daysold+" 天 "+hrsold+" 小时 "+minsold+" 分 "+seconds+" 秒";
      }
      show_date_time();
    </script>
    </div>
</script>
</section>
</center>
        </p>
      </div>
    </div>
  </div>
</footer>


<script src="https://res.cloudinary.com/jimmysong/raw/upload/rootsongjc-hugo/bootstrap.min.js"></script>
<script src="https://res.cloudinary.com/jimmysong/raw/upload/rootsongjc-hugo/photoswipe-ui-default.min.js"></script>
<script src="https://res.cloudinary.com/jimmysong/raw/upload/rootsongjc-hugo/photoswipe.min.js"></script>
<script src="https://res.cloudinary.com/jimmysong/raw/upload/rootsongjc-hugo/auto-render.min.js"></script>
<script src="https://systemime.github.io/js/main.js"></script>
<script src="https://systemime.github.io/js/clipboard.min.js"></script>
<script src="https://systemime.github.io/js/prism.js?t=123"></script>
<script src="https://systemime.github.io/js/highlight.min.js"></script>
<script src="https://res.cloudinary.com/jimmysong/raw/upload/rootsongjc-hugo/katex.min.js"></script>
<script src="https://systemime.github.io/js/reward.js"></script>
<script src="https://systemime.github.io/js/canvas_ribbon.js"></script>
<script> renderMathInElement(document.body); </script>

<script src="https://systemime.github.io/js/baguetteBox.js"></script>
<script> baguetteBox.run('.gallery');</script>






<script async defer src="https://buttons.github.io/buttons.js"></script>


<script src="https://polyfill.io/v2/polyfill.min.js?features=IntersectionObserver"></script>
<script type="text/javascript" src="https://systemime.github.io/js/quicklink.umd.js"></script>
<script>
window.addEventListener('load', () =>{
   quicklink();
});
</script>



<script type="text/javascript">
 
var a_idx = 0;
jQuery(document).ready(function($) {
    $("body").click(function(e) {
        var a = new Array("Docker", "Kubernetes", "Prometheus", "Envoy", "Istio", "Service Mesh", "Cloud Native");
        var $i = $("<span />").text(a[a_idx]);
        a_idx = (a_idx + 1) % a.length;
        var x = e.pageX,
        y = e.pageY;
        function randomColor() {
          var flakeColor = new Array("#FFDA65", "#00BFFF", "#BA55D3", "#FFA07A", "#87CEEB", "#FFB6C1");
          var snowColor = flakeColor[Math.floor(flakeColor.length * Math.random())];
          return snowColor;
        }
        $i.css({
            "z-index": 999999999999999999999999999999999999999999999999999999999999999999999,
            "top": y - 20,
            "left": x,
            "position": "absolute",
            "font-weight": "bold",
            "color": randomColor()
        });
        $("body").append($i);
        $i.animate({
            "top": y - 180,
            "opacity": 0
        },
        1500,
        function() {
            $i.remove();
        });
    });
});
</script>


<script type="text/javascript" src="https://systemime.github.io/js/lightbox.js"></script>











<script src="https://cdn.plyr.io/3.4.7/plyr.js"></script>
<script>const player = new Plyr('#player');</script>


<script async defer src="https://buttons.github.io/buttons.js"></script>


  </body>
</html>

